package br.ufu.wcm.controller;

import java.util.ArrayList;
import java.util.List;

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.ufu.wcm.dao.CotacaoDao;
import br.ufu.wcm.dao.ItemProdutoDao;
import br.ufu.wcm.dao.ProdutoFornecedorDao;
import br.ufu.wcm.model.Cotacao;
import br.ufu.wcm.model.Fornecedor;
import br.ufu.wcm.model.ItemProduto;
import br.ufu.wcm.model.Perfil;
import br.ufu.wcm.model.UsuarioSession;

@Resource
public class CotacaoController {
	
	private Result result;
	private UsuarioSession usuarioSession;
	private CotacaoDao cotacaoDao;
	private ProdutoFornecedorDao produtoFornecedorDao;
	private ItemProdutoDao itemProdutoDao;
	
	public CotacaoController(Result result, UsuarioSession usuarioSession, CotacaoDao cotacaoDao, ProdutoFornecedorDao produtoFornecedorDao, ItemProdutoDao itemProdutoDao) {
		this.result = result;
		this.usuarioSession = usuarioSession;
		this.cotacaoDao = cotacaoDao;
		this.produtoFornecedorDao = produtoFornecedorDao;
		this.itemProdutoDao = itemProdutoDao;
	}
	
	public void cliente(){
	}
	
	public void fornecedor(){
	}
	
	@Path("/cotacao")
	public void redirecionar(){
		Long codigoPerfil = usuarioSession.getUsuario().getPerfil().getCodigo(); 
		
		if(codigoPerfil.equals(Perfil.PERFIL_CLIENTE)) {
			result.forwardTo(CotacaoController.class).cliente();
		} else if (codigoPerfil.equals(Perfil.PERFIL_FORNECEDOR)) {
			result.forwardTo(CotacaoController.class).fornecedor();
		}
	}
	
	@Path("/cotacao/cotar")
	public void cotar(ItemProduto itemProduto) {
		
		itemProdutoDao.salvar(itemProduto);
		
		List<Fornecedor> fornecedores = produtoFornecedorDao.buscarFornecedorPorProduto(itemProduto.getProduto());
		
		Cotacao cotacao = new Cotacao();
		cotacao.setFornecedores(fornecedores);
		
		List<ItemProduto> itens = new ArrayList<ItemProduto>();
		itens.add(itemProduto);
		cotacao.setItensProduto(itens);
		
		cotacaoDao.salvar(cotacao);
		
		result.include("fornecedores", fornecedores);
		result.forwardTo(CotacaoController.class).cliente();
	}
	
}
